#include "main_menu.h"

void printGrade(int score);  
void sortArray(int *arr, int size);
// void guess_number_game();
// void control_pyramid();
// void generate_student_grades();


// 主菜单函数  
void main_menu() 
{  
    int choice;  
    while (1) 
    {  
        printf("\n你已进入菜单系统\n");  
        printf("1. 猜数字小游戏\n");  
        printf("2. 可控金字塔\n");  
        printf("3. 随机生成学生成绩\n");  
        printf("4. 退出\n");  
        printf("请选择功能(1-4):");  
        scanf("%d", &choice);  
        getchar();   
  
        switch (choice) 
        {  
            case 1:  
                guess_number_game(); //猜数字小游戏
                break;  
            case 2:  
                control_pyramid(); //金字塔 
                break;  
            case 3:  
                generate_student_grades(); //学生成绩
                break;  
            case 4:  
                printf("退出系统\n");  
                return; // 退出菜单循环  
            default:  
                printf("请重新选择,别乱选\n");  
        }  
    }  
}

void guess_number_game()
{
    // 设定的数字
    int pos;
    srand(time(NULL)); // 使用当前时间作为随机种子
    pos = rand() % 100 + 1; // 生成1到100之间的随机数   伪随机数


    // 用于猜的数字
    int T_c = 0;

    int Max = 100;
    int Min = 0;

    while (1)
    {
        printf("请输入你猜的数值");
        getchar();
        scanf("%d" , &T_c);
        // 判断用户是否瞎搞
        if (T_c >= Max || T_c <= Min)
        {
            printf("玩不起就别玩\n");
            continue; // 跳出当次循环
        }
        // 用于判断用户输入的值 是否满足条件
        if (T_c == pos)
        {
            printf("恭喜你 答对了\n");
            break; // 猜中了则退出
        }
        else if (T_c > pos)
        {
            Max = T_c;
            printf("大了 在[%d , %d]之间\n" , Min , Max );
        }
        else if (T_c < pos)
        {
            Min = T_c;
            printf("小了 在[%d , %d]之间\n" , Min , Max );
        }
    }
};



void control_pyramid()
{
    int rows;//层数
    int i;
    int j;
    int space;//空格数
         
    printf("请输入金字塔的层数:\n");
    scanf("%d" , &rows);  
    
    if (rows <= 0)
    {
        printf("层数必须是正数,别瞎搞\n");
    }
    

    for(i = 1; i <= rows; i++) 
    {     
        space = rows - i;    
          
        for(j = 0; j < space; j++) 
        {  
            printf(" ");  
        }  
                 
        for(j = 0; j < 2*i-1; j++) 
        {  
            printf("*");  
        }  
           
        printf("\n");  
    }
};



void generate_student_grades()
{
    
    
    int n = 10; // 假设要生成10个学生的成绩  
    int scores[n]; // 存储成绩的数组  
  
     
    srand(time(NULL)); 
  
    // 生成随机成绩并存储在数组中  
    for (int i = 0; i < n; i++) 
    {  
        scores[i] = rand() % 100 + 1;   
    }  
  
    // 对成绩进行排序  
    sortArray(scores, n);  
  
    // 打印排序后的成绩和等级  
    printf("排序后的学生成绩及等级：\n");  
    for (int i = 0; i < n; i++) 
    {  
        printf("学生%d: 成绩=%d, 等级：", i + 1, scores[i]);  
        printGrade(scores[i]);  
    }  
    
};
// 根据成绩打印等级的函数  
void printGrade(int score) 
{  
    if (score >= 90) 
    {  
        printf("A\n");  
    } 
    else if (score >= 80) 
    {  
        printf("B\n");  
    } 
    else if (score >= 70) 
    {  
        printf("C\n");  
    } 
    else if (score >= 60) 
    {  
        printf("D\n");  
    } 
    else 
    {  
        printf("不及格\n");  
    }  
}
// 对数组进行排序的函数  
void sortArray(int *arr, int size) {  
    int temp;  
    for (int i = 0; i < size - 1; i++) 
    {  
        for (int j = 0; j < size - 1 - i; j++) 
        {  
            if (arr[j] > arr[j + 1]) 
            {  
                temp = arr[j];  
                arr[j] = arr[j + 1];  
                arr[j + 1] = temp;  
            }  
        }  
    }  
}